home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / mtd / jedec.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  2KB  |  67 lines

  1.  
  2. /* JEDEC Flash Interface.
  3.  * This is an older type of interface for self programming flash. It is 
  4.  * commonly use in older AMD chips and is obsolete compared with CFI.
  5.  * It is called JEDEC because the JEDEC association distributes the ID codes
  6.  * for the chips.
  7.  *
  8.  * See the AMD flash databook for information on how to operate the interface.
  9.  *
  10.  * $Id: jedec.h,v 1.3 2003/05/21 11:51:01 dwmw2 Exp $
  11.  */
  12.  
  13. #ifndef __LINUX_MTD_JEDEC_H__
  14. #define __LINUX_MTD_JEDEC_H__
  15.  
  16. #include <linux/types.h>
  17.  
  18. #define MAX_JEDEC_CHIPS 16
  19.  
  20. // Listing of all supported chips and their information
  21. struct JEDECTable
  22. {
  23.    __u16 jedec;
  24.    char *name;
  25.    unsigned long size;
  26.    unsigned long sectorsize;
  27.    __u32 capabilities;
  28. };
  29.  
  30. // JEDEC being 0 is the end of the chip array
  31. struct jedec_flash_chip
  32. {
  33.    __u16 jedec;
  34.    unsigned long size;
  35.    unsigned long sectorsize;
  36.    
  37.    // *(__u8*)(base + (adder << addrshift)) = data << datashift
  38.    // Address size = size << addrshift
  39.    unsigned long base;           // Byte 0 of the flash, will be unaligned
  40.    unsigned int datashift;       // Useful for 32bit/16bit accesses
  41.    unsigned int addrshift;
  42.    unsigned long offset;         // linerized start. base==offset for unbanked, uninterleaved flash
  43.    
  44.    __u32 capabilities;
  45.    
  46.    // These markers are filled in by the flash_chip_scan function
  47.    unsigned long start;
  48.    unsigned long length;
  49. };
  50.  
  51. struct jedec_private
  52. {
  53.    unsigned long size;         // Total size of all the devices
  54.    
  55.    /* Bank handling. If sum(bank_fill) == size then this is linear flash.
  56.       Otherwise the mapping has holes in it. bank_fill may be used to
  57.       find the holes, but in the common symetric case 
  58.       bank_fill[0] == bank_fill[*], thus addresses may be computed 
  59.       mathmatically. bank_fill must be powers of two */
  60.    unsigned is_banked;
  61.    unsigned long bank_fill[MAX_JEDEC_CHIPS];
  62.    
  63.    struct jedec_flash_chip chips[MAX_JEDEC_CHIPS];  
  64. };
  65.  
  66. #endif
  67.